/*
  1. 地址是完整地址，服务更换的时候，所有的地址都要修改一轮，不易于维护。
  2. 每次获取结果的都是要从 `res[1].data.message` 中获取数据，太麻烦。
  3. 如果访问需要登录才能访问的接口，路径的特点都有 `/my/` 这一级路径，需要设置请求头 `Authorization:token`
*/

// 预期希望调用格式：
// this.$axios({ url:'/users/wxlogin' })

// this.$request({
//   url:'/users/wxlogin',
//   data:{ },
// })
// this.$request({
//   method:'POST',
//   url:'/my/orders/req_unifiedorder',
//   data:{ },
// })

const baseURL = 'https://api-hmugo-web.itheima.net/api/public/v1';

const request = (config)=>{
  // 1.0 版本
  // return uni.request({
  //   ...config,
  //   // 路径拼接处理
  //   url: baseURL + config.url,
  // });
  
  // 2.0 版本
  // return new Promise((resolve,reject)=>{
  //   uni.request({
  //     ...config,
  //     // 路径拼接处理
  //     url: baseURL + config.url,
  //     // 成功的回调函数，对应以后的 then(res)
  //     success: (res) => {
  //       console.log(res);
  //       if(res.statusCode === 200){
  //         // then(res)
  //         resolve(res.data.message);
  //       }else{
  //         reject(res.errMsg);
  //       }
  //     },
  //     // 失败的回调函数，对应 catch(err)
  //     fail: (err) => {
  //       reject(err);
  //     }
  //   });
  // })
  
  // 3.0 版本
  // 如果路径中包含了 /my/ 这一级路径
  if(config.url.indexOf('/my/') > -1){
    // 获取 token
    const token = uni.getStorageSync('token');
    // 添加请求头
    config.header = {
      // 先把原本的 header 添加回来
      ...config.header,
      // 再添加上 token
      Authorization: token
    } 
  }
  
  return new Promise((resolve,reject)=>{
    uni.request({
      ...config,
      // 路径拼接处理
      url: baseURL + config.url,
      // 成功的回调函数，对应以后的 then(res)
      success: (res) => {
        console.log(res);
        if(res.statusCode === 200){
          // then(res)
          resolve(res.data.message);
        }else{
          reject(res.errMsg);
        }
      },
      // 失败的回调函数，对应 catch(err)
      fail: (err) => {
        reject(err);
      }
    });
  })
  
  
}

export default request;



